/**
 *  Copyright 2011 Miguel Ángel López Vicente 
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package cc.radio.app;

import java.io.Serializable;
import java.util.Vector;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import cc.utils.Http;


/**
 * Esta clase es la encargada obtener los capítulos
 * de cada programa
 */
public class Programa implements Serializable {

	
	private String id;
	private String titulo;
	private int limite;
	
	
	
	public Programa(Element html) {
		limite = 0;
		titulo = html.text();
		id = html.attr("href").split("&")[3].substring(3);

	}


	public String getTitulo() {
		return titulo;
	}
	
	public String getUrl() {
		return Radio.URL_PROGRAMA+id;
	}
	
	/**
	 * Devuele los siguientes 10 capítulos del programa cada vez que lo llamas
	 * @return siguientes 10 capítulos
	 */
	public Vector<Capitulo> getCapitulos() {
		//Obtenemos los primeros 5 capítulos
		Vector<Capitulo> capitulos = getCapitulos2();
		//Si hemos obtenido 5 capítulos, pedimos otros tantos más
		//de lo contrario, es que no hay más... así que nada...
		if (capitulos.size() == 5)
			capitulos.addAll(getCapitulos2());
		
		return capitulos;
	}
	
	/**
	 * Metodo privado para obtener los capítulos
	 * @return capítulos
	 */
	private Vector<Capitulo> getCapitulos2() {
		Vector<Capitulo> capitulos = new Vector<Capitulo>();

		Document html = Jsoup.parse(Http.getUrl(getUrl()+"&limitstart="+limite));
		Elements capis = html.select(".contentpaneopen");
		for (int i = 0; i < capis.size(); i++) {
			Capitulo c = new Capitulo(capis.get(i));
			if (c.isValid())
				capitulos.add(c);
		}
		
		limite += 5;	
		return capitulos;
	}
	
	
	private static final long serialVersionUID = -3170268555138978326L;

}
